package com.ruoyi.app.domain.bo;

import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * APP用户信息业务对象 app_user
 *
 * @author ruoyi
 * @date 2025-12-08
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class AppUserBo extends BaseEntity {

    /**
     * 用户ID
     */
    private Long id;

    /**
     * 用户账号
     */
    private String userName;

    /**
     * 用户昵称
     */
    private String nickName;

    /**
     * 用户邮箱
     */
    private String email;

    /**
     * 身份证号码
     */
    private String code;

    /**
     * 身份证姓名
     */
    private String codeName;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 用户性别（0=男 1=女 2=未知）
     */
    private String sex;

    /**
     * 邀请码
     */
    private String inviteCode;

    /**
     * 父级ID
     */
    private Long parentId;

    /**
     * 头像地址
     */
    private String avatar;

    /**
     * 环信uuid
     */
    private String uuid;

    /**
     * 生活照片地址
     */
    private String photo;

    /**
     * 个性签名
     */
    private String signature;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String password;

    /**
     * 职业
     */
    @NotBlank(message = "职业不能为空", groups = {AddGroup.class, EditGroup.class})
    private String occupation;

    /**
     * 学校
     */
    @NotBlank(message = "学校不能为空", groups = {AddGroup.class, EditGroup.class})
    private String school;

    /**
     * 出生年月
     */
    @NotNull(message = "出生年月不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long birthday;

    /**
     * 身高(cm)
     */
    private String height;

    /**
     * 交友目的
     */
    private String target;

    /**
     * 交友目的状态(0=所有人可见,1=相同目的可见,2=不可见)
     */
    private String targetStatus;

    /**
     * 家乡
     */
    private String home;

    /**
     * 居住地省份
     */
    private String province;

    /**
     * 居住地城市
     */
    private String city;

    /**
     * 纬度
     */
    private Double latitude;
    /**
     * 经度
     */
    private Double longitude;

    /**
     * 帐号类型(0=用户注册，1=自动注册)
     */
    private String register;

    /**
     * 帐号状态（0=正常 1=冻结 ）
     */
    @NotBlank(message = "帐号状态（0=正常 1=冻结 ）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String status;

    /**
     * 帐号状态（0=不在线 1=在线 ）
     */
    private String onlineStatus;

    /**
     * 最后登录IP
     */
    private String loginIp;

    /**
     * 最后登录时间
     */
    private Date loginDate;

    /**
     * 备注
     */
    private String remark;


    private Integer vipId;


    private Long vipExpireTime;

    /**
     * 靓号
     */
    private String accountNumber;

    /**
     * 用户等级
     */
    private Long level;

    /**
     * 销售等级
     */
    private Long salesLevel;

    /**
     * 团队IDS
     */
    private String parentIds;

    private List<Long> userIds;

    private String realStatus;

    private String[] time;

    /**
     * 减少的手续费比例
     */
    private Integer reduceLv;

    /**
     * 设备唯一标识
     */
    private String uniqueCode;

    /**
     * 微信二维码
     */
    private String wxImg;

    /**
     * 支付宝二维码
     */
    private String aliImg;

    /**
     * 银行卡号
     */
    private String bankCode;

    /**
     * 持卡人姓名
     */
    private String bankName;

    /**
     * 银行卡开户行
     */
    private String bankType;

    /**
     * 搜索类型(0=公开 1 id可找到 2手机号可找到 3啥也不是)
     */
    private Integer searchType;

    /**
     * 搜索类型(0=允许 1拒绝) 是否可以搜索id
     */
    private Integer searchId;

    /**
     * 搜索类型(0允许 1拒绝) 是否可以搜索手机号
     */
    private Integer searchPhone;
    /**
     * 创建群权限 0无 1有
     */
    private Integer createGroupFlag;
}
